Generating technical drawings from building information models

ABSTRACT

The present disclosure is directed to a software tool that facilitates the presentation of a three-dimensional view of a construction project as well as the generation of various types of two-dimensional technical drawings based on this three-dimensional view. In one implementation, the software tool causes a computing device to engage in the following operations. The computing device may receive a user input identifying at least one first mesh and at least one second mesh, determine portions of each identified mesh that intersect with a two-dimensional plane, and generate a two-dimensional drawing including a display of relevant dimensioning information based on the determined portions.

CROSS-REFERENCE TO RELATED APPLICATION

This application is a continuation of, and claims the benefit ofpriority under 35 U.S.C. § 120 to, U.S. patent application Ser. No.16/594,877, filed on Oct. 7, 2019 and titled “Generating TechnicalDrawings From Building Information Models,” which is acontinuation-in-part of, and claims the benefit of priority under 35U.S.C. § 120 to, U.S. patent application Ser. No. 16/277,752, filed onFeb. 15, 2019 and titled “Generating Technical Drawings From BuildingInformation Models,” the contents of each of which are incorporated byreference herein in their entireties.

BACKGROUND

Construction projects are often complex endeavors involving thecoordination of many professionals across several discrete phases.Typically, a construction project commences with a design phase, wherearchitects design the overall shape and layout of a constructionproject, such as a building. Next, engineers engage in a planning phasewhere they take the architects' designs and produce engineering drawingsand plans for the construction of the project. At this stage, engineersmay also design various portions of the project's infrastructure, suchas HVAC, plumbing, electrical, etc., and produce plans reflecting thesedesigns as well. After, or perhaps in conjunction with, the planningphase, contractors may engage in a logistics phase to review these plansand begin to allocate various resources to the project, includingdetermining what materials to purchase, scheduling delivery, anddeveloping a plan for carrying out the actual construction of theproject. Finally, during the construction phase, constructionprofessionals begin to construct the project based on the finalizedplans.

Overview

As a general matter, one phase of a construction project involves thecreation, review, and sometimes revision, of plans of the constructionproject. In most cases, these plans comprise visual representations ofthe construction project that visually communicate information about theconstruction project, such as how to assemble or construct the project.Such visual representations tend to take one of at least two differentforms. One form may be a two-dimensional technical drawing, such as anarchitectural drawing or a construction blueprint, in whichtwo-dimensional line segments of the drawing represent certain physicalelements of the construction project like walls and ducts. In thisrespect, a two-dimensional technical drawing could be embodied either inpaper form or in a computerized form, such as an image file (e.g., aPDF, JPEG, etc.).

Two-dimensional technical drawings have advantages. For instance, theyare often set out in a universally-recognized format that most, if notall, construction professionals can read and understand. Further, theyare designed to be relatively compact, with one drawing being arrangedto fit on a single piece of paper or in a computerized file format thatrequires minimal processing power and computer storage (e.g., a PDFviewer, JPEG viewer, etc.). Yet, two-dimensional drawings havedisadvantages as well. For instance, it often takes multiple drawings inorder to visually communicate an overview of an entire constructionproject. This is due to the fact that two-dimensional drawings tend notto efficiently present information about the construction project from athird (e.g., vertical) dimension. Typically, a construction project mayhave at least one two-dimensional technical drawing per floor of theconstruction project. Thus, for a construction project spanning, say,ten floors, the construction project will have at least tentwo-dimensional technical drawings, and perhaps more to fully visuallycommunicate the various aspects of the construction project.

To advance over two-dimensional technical drawings, computerized,three-dimensional technology was developed as another form in whichinformation about a construction project can be visually communicated.In this respect, a three-dimensional model of the construction projectwould be embodied in a computerized form, such as in a buildinginformation model (BIM) file, with three-dimensional meshes visuallyrepresenting the physical elements of the construction project (e.g.,walls, ducts, etc.). Specialized software is configured to access a BIMfile and, based on this BIM file, render a three-dimensional view of theconstruction project from one or more perspectives. This provided someadvantages over two-dimensional technical drawings, namely that aconstruction professional could often get a full overview of the entireconstruction project based on a single three-dimensional view and thusmay not have to shuffle through multiple two-dimensional drawings inorder to conceptualize what the construction project looks like. Inaddition, the specialized software allowed a construction professionalto navigate throughout the three-dimensional view and focus on elementsof interest in the construction project, such as a particular wall orduct.

However, existing technology for presenting visual representations ofconstruction projects has several limitations. For example, one suchlimitation is that existing software tools for renderingthree-dimensional views of construction projects do not provide all theinformation about a construction project that may be available oncertain two-dimensional technical drawings. For instance, dimensioninginformation for certain physical elements of a construction project maynot be presented on a three-dimensional view of a construction projectas doing so may clutter or obscure the three-dimensional presentation.Such information is more aptly displayed on an appropriatetwo-dimensional drawing.

Another limitation is that existing software tools for renderingthree-dimensional views of construction projects do not have thecapability to generate two-dimensional drawings that correspond to thethree-dimensional view. This is problematic because, as mentioned,two-dimensional drawings may display certain information, such asdimensioning information, that is not (and perhaps cannot be) presentedin the three-dimensional view of the construction project.

Another limitation with existing technology for presenting visualrepresentations of construction projects is that, while some softwaretools exist that can render a three-dimensional view of the constructionproject from various perspectives, these software tools tend not toprovide any overview of the entire construction project that isfunctional. For instance, some software tools for renderingthree-dimensional views of construction projects may also have thecapability to present a static, two-dimensional drawing of the projectas an inset to the rendering of a three-dimensional view (usuallypositioned, for instance, in the top left or top right corner of thescreen). However, such an inset tends not be as functional as desired.For instance, in some cases, the inset does not display enoughinformation about the construction project or does not provide anyability to use the inset to navigate about the three-dimensional model.

Yet another limitation with existing technology for presenting visualrepresentations of construction projects is that, in some cases, neithera two-dimensional technical drawing nor a three-dimensional view readilyprovides desired information about the construction project. Forinstance, consider a scenario where construction plans call for acollection of multiple pipes to run parallel to a floor, but, perhaps asan oversight, no individual technical drawing nor any view of athree-dimensional model indicates the specific distance between each ofthese pipes. In scenarios like these, the construction professionalwould typically derive this information based on his or her owncalculation, accounting for, among other things, the known dimension ofan individual pipe, the total number of pipes in the collection, how farthe first pipe is from the near wall, and how far the last pipe is fromthe far wall.

To address these problems (among others) with existing technology forpresenting visual representations of construction projects, disclosedherein is software technology that enables a computing system togenerate a two-dimensional technical drawing at a custom clip heightbased on a view of a three-dimensional model, which may then bepresented to a user of the computer system (e.g., a constructionprofessional). For instance, in one implementation, the disclosedsoftware technology may cause a computing device to engage in thefollowing operations: (1) receive an indication of a desired clip heightof a three-dimensional view at which to generate a two-dimensionaltechnical drawing; (2) identify a subset of meshes that intersect with atwo-dimensional plane at the desired clip height; (3) determinerespective portions of each mesh that intersect the two-dimensionalplane at the desired clip height; (4) compile a dataset that defines thetwo-dimensional drawing; and (5) render the two-dimensional drawingusing the compiled dataset. However, it should be understood that thedisclosed software technology for generating a two-dimensional technicaldrawing based on a three-dimensional model may cause a computing systemto perform various other operations as well.

To further address the aforementioned problems (among others) withexisting technology for presenting visual representations ofconstruction projects, also disclosed herein is software technology thatenables a computing system to use a three-dimensional model as a basisfor generating a two-dimensional drawing that may serve as a functionalinset to the three-dimensional view, which may then be presented to auser of the computing system (e.g., a construction professional). Forinstance, in one implementation, the disclosed software technology maycause a computing device to engage in the following operations: (1)generate a top-down two-dimensional drawing of the three-dimensionalmodel at a default clip height by, for instance, engaging in a similarprocess to that mentioned above; (2) retrieve from data storage atechnical drawing file and use a pattern matching technique in order tomatch portions of the generated top-down two-dimensional technicaldrawing with portions of the retrieved technical drawing file; and (3)overlay the top-down two-dimensional drawing onto the retrievedtechnical drawing file in accordance with the pattern matching techniqueto thereby create a functional inset. However, it should be understoodthat the disclosed software technology for generating a functionaltwo-dimensional technical drawing may cause a computing system toperform various other operations as well.

To still further address the aforementioned problems (among others) withexisting technology for presenting visual representations ofconstruction projects, also disclosed herein is software technology thatenables a computing system to use a three-dimensional model as a basisfor generating a two-dimensional drawing that includes additionaldimensioning information that may not be otherwise available, which maythen be presented to a user of the computing system (e.g., aconstruction professional). For instance, in one implementation, thedisclosed software technology may cause a computing device to engage inthe following operations: (1) receive an indication of an area ofinterest in a three-dimensional model that includes at least one mesh;(2) identify from among the meshes in the three-dimensional model themeshes that intersect with the area of interest; (3) determine portionsof each mesh that intersects with the area of interest line; and (4)based on the determined portions, generate a two-dimensional drawingincluding a display of dimension information. In another implementation,the disclosed software technology may cause a computing device to engagein the following operations: (1) receive a user input identifying atleast one first mesh and at least one second mesh; (2) determineportions of each identified mesh that intersect with a two-dimensionalplane; and (3) generate a two-dimensional drawing including a display ofrelevant dimensioning information based on the determined portions.However, it should be understood that the disclosed software technologyfor generating a two-dimensional drawing having additional dimensioninginformation may cause a computing system to perform various otheroperations as well.

As set forth in more detail below, the disclosed software technology forpresenting visual representations of construction projects may cause thecomputing system to engage in various other operations as well.

Accordingly, in one aspect, disclosed herein is a computer-implementedmethod that involves (a) rendering a three-dimensional view of aconstruction project using a three-dimensional model file that defines aset of meshes; (b) receiving an indication of a clip height at which togenerate a two-dimensional drawing of the construction project, whereinthe clip height is associated with the rendered three-dimensional viewof the construction project; (c) identifying, from among the set ofmeshes defined by the three-dimensional model file, a subset of meshesthat intersect with a two-dimensional plane positioned at the clipheight; (d) for each respective mesh in the identified subset of meshes,generating a respective dataset that defines a particular portion of therespective mesh that intersects with the two-dimensional planepositioned at the clip height; (e) based at least on the respectivedataset for each respective mesh in the identified subset of meshes,generating a compiled dataset that defines the two-dimensional drawingof the construction project at the clip height; and (f) rendering thetwo-dimensional drawing of the construction project using the compileddataset.

In another aspect, disclosed herein is a computing system that comprisesat least one processor, a non-transitory computer-readable medium, andprogram instructions stored on the non-transitory computer-readablemedium that are executable by the at least one processor to cause thecomputing system to carry out the operations disclosed herein, includingbut not limited to the operations of the foregoing method.

In yet another aspect, disclosed herein is a non-transitorycomputer-readable medium comprising program instructions that areexecutable to cause a computing system to carry out the operationsdisclosed herein, including but not limited to the operations of theforegoing method.

One of ordinary skill in the art will appreciate these as well asnumerous other aspects in reading the following disclosure.

BRIEF DESCRIPTION OF THE DRAWINGS

The patent or application file contains at least one drawing executed incolor. Copies of this patent or patent application publication withcolor drawing(s) will be provided by the Office upon request and paymentof the necessary fee.

FIG. 1 depicts an example network configuration in which exampleembodiments may be implemented.

FIG. 2 depicts an example computing platform that may be configuredcarry out one or more of the functions of the present disclosure.

FIG. 3 depicts an example two-dimensional technical drawing.

FIG. 4 depicts an example three-dimensional BIM view, in accordance withone embodiment of the present disclosure.

FIG. 5 is a flow diagram depicting example operations for generating atwo-dimensional technical drawing at a custom clip height, according toone embodiment of the present disclosure.

FIG. 6A depicts an example output of a computing device, in accordancewith one embodiment of the present disclosure.

FIG. 6B depicts an example output of a computing device, in accordancewith one embodiment of the present disclosure.

FIG. 7 depicts an example output of a computing device, in accordancewith one embodiment of the present disclosure.

FIG. 8A is a flow diagram depicting example operations for generating afunctional inset, according to one embodiment of the present disclosure.

FIG. 8B is a flow diagram depicting example operations for engaging in apattern matching technique, according to one embodiment of the presentdisclosure.

FIG. 9A depicts an example output of a computing device, in accordancewith one embodiment of the present disclosure.

FIG. 9B depicts an example output of a computing device, in accordancewith one embodiment of the present disclosure.

FIG. 10 depicts an example output of a computing device, in accordancewith one embodiment of the present disclosure.

FIG. 11 is a flow diagram depicting example operations for generating atwo-dimensional dimension view, according to one embodiment of thepresent disclosure.

FIG. 12A depicts an example output of a computing device, in accordancewith one embodiment of the present disclosure.

FIG. 12B depicts an example output of a computing device, in accordancewith one embodiment of the present disclosure.

FIG. 13A depicts an example output of a computing device, in accordancewith one embodiment of the present disclosure.

FIG. 13B depicts an example output of a computing device, in accordancewith one embodiment of the present disclosure.

FIG. 14 is a flow diagram depicting example operations for generating atwo-dimensional dimension view, according to one embodiment of thepresent disclosure.

FIG. 15A depicts an example output of a computing device, in accordancewith one embodiment of the present disclosure.

FIG. 15B depicts an example output of a computing device, in accordancewith one embodiment of the present disclosure.

FIG. 15C depicts an example output of a computing device, in accordancewith one embodiment of the present disclosure.

DETAILED DESCRIPTION

The following disclosure makes reference to the accompanying figures andseveral example embodiments. One of ordinary skill in the art shouldunderstand that such references are for the purpose of explanation onlyand are therefore not meant to be limiting. Part or all of the disclosedsystems, devices, and methods may be rearranged, combined, added to,and/or removed in a variety of manners, each of which is contemplatedherein.

I. EXAMPLE SYSTEM CONFIGURATION

The present disclosure is generally directed to software technology formanaging construction projects, and in particular to a software toolthat renders a three-dimensional view of a construction project andgenerates additional two-dimensional views based on thethree-dimensional view. As one possible implementation, this softwaretechnology may include both front-end software running on clientstations that are accessible to individuals associated with constructionprojects (e.g., contractors, project managers, architects, engineers,designers, etc.) and back-end software running on a back-end platform(sometimes referred to as a “cloud” platform) that interacts with and/ordrives the front-end software, and which may be operated (eitherdirectly or indirectly) by the provider of the front-end clientsoftware. As another possible implementation, this software technologymay include front-end client software that runs on client stationswithout interaction with a back-end platform. The software technologydisclosed herein may take other forms as well.

In general, such front-end client software may enable one or moreindividuals responsible for a construction project to perform varioustasks related to the management of the construction project, which maytake various forms. According to some implementations, these tasks mayinclude: rendering three-dimensional views of the construction project,navigating through the various three-dimensional views of theconstruction project in order to observe the construction project fromvarious perspectives, and using the software to generate two-dimensionaldrawings, as some non-limiting examples. Further, such front-end clientsoftware may take various forms, examples of which may include a nativeapplication (e.g., a mobile application) and/or a web applicationrunning on a client station, among other possibilities.

Turning now to the figures, FIG. 1 depicts an example networkconfiguration 100 in which example embodiments of the present disclosuremay be implemented. As shown in FIG. 1 , network configuration 100includes a back-end platform 102 that may be communicatively coupled toone or more client stations, depicted here, for the sake of discussion,as client stations 112.

Broadly speaking, back-end platform 102 may comprise one or morecomputing systems that have been provisioned with software for carryingout one or more of the functions disclosed herein, including but notlimited to rendering three-dimensional views of models of a constructionproject, and/or transmitting data and/or instructions that cause one ormore client stations 112 to output information related to a constructionproject, including the rendered views of the three-dimensional model ofthe construction project. The one or more computing systems of back-endplatform 102 may take various forms and be arranged in various manners.

For instance, as one possibility, back-end platform 102 may comprisecomputing infrastructure of a public, private, and/or hybrid cloud(e.g., computing and/or storage clusters) that has been provisioned withsoftware for carrying out one or more of the functions disclosed herein.In this respect, the entity that owns and operates back-end platform 102may either supply its own cloud infrastructure or may obtain the cloudinfrastructure from a third-party provider of “on demand” computingresources, such include Amazon Web Services (AWS) or the like. Asanother possibility, back-end platform 102 may comprise one or morededicated servers that have been provisioned with software for carryingout one or more of the functions disclosed herein. Other implementationsof back-end platform 102 are possible as well.

In turn, client stations 112 may each be any computing device that iscapable of running the front-end software disclosed herein. In thisrespect, client stations 112 may each include hardware components suchas a processor, data storage, a user interface, and a network interface,among others, as well as software components that facilitate the clientstation's ability to run the front-end software disclosed herein (e.g.,operating system software, web browser software, etc.). Asrepresentative examples, client stations 112 may each take the form of adesktop computer, a laptop, a netbook, a tablet, a smartphone, and/or apersonal digital assistant (PDA), among other possibilities.

As further depicted in FIG. 1 , back-end platform 102 is configured tointeract with client stations 112 over respective communication paths110. In this respect, each communication path 110 between back-endplatform 102 and one of client stations 112 may generally comprise oneor more communication networks and/or communications links, which maytake any of various forms. For instance, each respective communicationpath 110 with back-end platform 102 may include any one or more ofpoint-to-point links, Personal Area Networks (PANs), Local-Area Networks(LANs), Wide-Area Networks (WANs) such as the Internet or cellularnetworks, cloud networks, and/or operational technology (OT) networks,among other possibilities. Further, the communication networks and/orlinks that make up each respective communication path 110 with back-endplatform 102 may be wireless, wired, or some combination thereof, andmay carry data according to any of various different communicationprotocols. Although not shown, the respective communication paths 110between client stations 112 and back-end platform 102 may also includeone or more intermediate systems. For example, it is possible thatback-end platform 102 may communicate with a given client station 112via one or more intermediary systems, such as a host server (not shown).Many other configurations are also possible.

The interaction between client stations 112 and back-end platform 102may take various forms. As one possibility, client stations 112 may sendcertain user input related to a construction project to back-endplatform 102, which may in turn trigger back-end platform 102 to takeone or more actions based on the user input. As another possibility,client stations 112 may send a request to back-end platform 102 forcertain project-related data and/or a certain front-end software module,and client stations 112 may then receive project-related data (andperhaps related instructions) from back-end platform 102 in response tosuch a request. As yet another possibility, back-end platform 102 may beconfigured to “push” certain types of project-related data to clientstations 112, such as rendered three-dimensional views, in which caseclient stations 112 may receive project-related data (and perhapsrelated instructions) from back-end platform 102 in this manner. Asstill another possibility, back-end platform 102 may be configured tomake certain types of project-related data available via an API, aservice, or the like, in which case client stations 112 may receiveproject-related data from back-end platform 102 by accessing such an APIor subscribing to such a service. The interaction between clientstations 112 and back-end platform 102 may take various other forms aswell.

In practice, client stations 112 may each be operated by and/orotherwise associated with a different individual that is associated witha construction project. For example, an individual tasked with theresponsibility for creating project-related data, such as data filesdefining three-dimensional models of a construction project may accessone of the client stations 112, whereas an individual tasked with theresponsibility for reviewing and revising data files definingthree-dimensional models of a construction project may access anotherclient station 112, whereas an individual tasked with the responsibilityfor performing work related to project-related data, such as an on-siteconstruction professional may access yet another client station 112.However, client stations 112 may be operated by and/or otherwiseassociated with individuals having various other roles with respect to aconstruction project as well. Further, while FIG. 1 shows an arrangementin which three particular client stations are communicatively coupled toback-end platform 102, it should be understood that an arrangement mayinclude more or fewer client stations.

Although not shown in FIG. 1 , back-end platform 102 may also beconfigured to receive project-related data from one or more externaldata sources, such as an external database and/or another back-endplatform or platforms. Such data sources—and the project-related dataoutput by such data sources—may take various forms.

It should be understood that network configuration 100 is one example ofa network configuration in which embodiments described herein may beimplemented. Numerous other arrangements are possible and contemplatedherein. For instance, other network configurations may includeadditional components not pictured and/or more or less of the picturedcomponents.

II. EXAMPLE COMPUTING DEVICE

FIG. 2 is a simplified block diagram illustrating some structuralcomponents that may be included in an example computing device 200,which could serve as, for instance, the back-end platform 102 and/or oneor more of client stations 112 in FIG. 1 . In line with the discussionabove, computing device 200 may generally include at least a processor202, data storage 204, and a communication interface 206, all of whichmay be communicatively linked by a communication link 208 that may takethe form of a system bus or some other connection mechanism.

Processor 202 may comprise one or more processor components, such asgeneral-purpose processors (e.g., a single- or multi-coremicroprocessor), special-purpose processors (e.g., anapplication-specific integrated circuit or digital-signal processor),programmable logic devices (e.g., a field programmable gate array),controllers (e.g., microcontrollers), and/or any other processorcomponents now known or later developed. In line with the discussionabove, it should also be understood that processor 202 could compriseprocessing components that are distributed across a plurality ofphysical computing devices connected via a network, such as a computingcluster of a public, private, or hybrid cloud.

In turn, data storage 204 may comprise one or more non-transitorycomputer-readable storage mediums, examples of which may includevolatile storage mediums such as random-access memory, registers, cache,etc. and non-volatile storage mediums such as read-only memory, ahard-disk drive, a solid-state drive, flash memory, an optical-storagedevice, etc. In line with the discussion above, it should also beunderstood that data storage 204 may comprise computer-readable storagemediums that are distributed across a plurality of physical computingdevices connected via a network, such as a storage cluster of a public,private, or hybrid cloud.

As shown in FIG. 2 , data storage 204 may be provisioned with softwarecomponents that enable the computing device 200 to carry out theoperations disclosed herein. These software components may generallytake the form of program instructions that are executable by theprocessor 202 to carry out the disclosed functions, which may bearranged together into software applications, virtual machines, softwaredevelopment kits, toolsets, or the like, all of which are referred toherein as a software tool or software tools. Further, data storage 204may be arranged to store project-related data in one or more databases,file systems, or the like. Data storage 204 may take other forms and/orstore data in other manners as well.

Communication interface 206 may be configured to facilitate wirelessand/or wired communication with other computing devices or systems, suchas one or more client stations 112 when computing device 200 serves asback-end platform 102, or as back-end platform 102 when computing device200 serves as one of client stations 112. As such, communicationinterface 206 may take any suitable form for carrying out thesefunctions, examples of which may include an Ethernet interface, a serialbus interface (e.g., Firewire, USB 3.0, etc.), a chipset and antennaadapted to facilitate wireless communication, and/or any other interfacethat provides for wireless and/or wired communication. Communicationinterface 206 may also include multiple communication interfaces ofdifferent types. Other configurations are possible as well.

Although not shown, computing device 200 may additionally include one ormore other interfaces that provide connectivity with externaluser-interface equipment (sometimes referred to as “peripherals”), suchas a keyboard, a mouse or trackpad, a display screen, a touch-sensitiveinterface, a stylus, a virtual-reality headset, speakers, etc., whichmay allow for direct user interaction with computing device 200.

It should be understood that computing device 200 is one example of acomputing device that may be used with the embodiments described herein.Numerous other arrangements are possible and contemplated herein. Forinstance, other computing devices may include additional components notpictured and/or more or fewer of the pictured components.

III. EXAMPLE VISUAL REPRESENTATIONS OF CONSTRUCTION PROJECTS

As mentioned above, one aspect of managing a construction projectinvolves the creation, review, and sometimes revision, of plans for theconstruction project. These plans assist construction professionals incarrying out the construction project. For example, some plans includewritten statements, such a punch list or submittal log, which maycommunicate, for instance, what materials are needed duringconstruction. Other plans may include visual representations of theconstruction project that visually communicate to the constructionprofessionals how to assemble or construct the project.

Depending on the type of construction project, these visualrepresentations tend to take one of two different forms. As onepossibility, these visual representations may take the form of a set oftwo-dimensional technical drawings, such as architectural drawings,engineering schematics, or construction blueprints, among others. Fromthese two-dimensional technical drawings, the construction professionalscan determine how to construct the project. As another possibility,these visual representations may take the form of a computerized,three-dimensional visual representation of the construction project.Construction professionals can use a corresponding software tool toreview the three-dimensional visual representation, often in conjunctionwith a review of two-dimensional technical drawings, as an aid duringthe construction process. Set forth below is a short overview of each ofthese types of visual representations of construction projects.

A. Two-Dimensional Technical Drawings

As mentioned, one way to visually represent information about aconstruction project is through two-dimensional technical drawings.Generally, a two-dimensional technical drawing serves to visuallycommunicate a limited amount of information about the constructionproject in order to aid in the construction, or the further design, ofthe project. To illustrate, FIG. 3 depicts one example of atwo-dimensional technical drawing in the form of an architecturaldrawing 300, which may visually communicate how the construction projectis laid out. To do this, an architectural drawing, such as architecturaldrawing 300 may comprise a scaled drawing depicting certain foundationalelements of the construction project (e.g., floors, walls, ceilings,doorways, and support elements), with perhaps visual indications ofadditional relevant aspects of these foundational elements, such asmeasurements, dimensions, materials, etc.

Another example of a two-dimensional technical drawing is a schematicthat visually communicates how the heating, ventilation, and airconditioning (HVAC) ductwork is routed throughout the building. Like thearchitectural drawing, this schematic may visually communicate the HVACductwork routing through the use of a scaled depiction of the ductworkalong with indications of other relevant aspects of the ductwork, suchas measurements, dimensions, materials, etc.

Because technical drawings such as these are limited to two dimensions,multiple technical drawings may be used when there is a need to visuallycommunicate aspects from a third (e.g., vertical) dimension. Forinstance, a construction project may comprise multiple floors and thedesign of the project may call for the shape or structure to change fromfloor to floor. In such a case, there may be one (or more) technicaldrawings for each floor of the construction project. And although justtwo example types of technical drawings were mentioned above, a typicalconstruction project may involve the use of many other types of othertechnical drawings, including for instance technical drawings associatedwith landscaping, electrical, plumbing, installation, etc. For thesereasons, a single construction project may involve the use of tens,hundreds, or perhaps, thousands of technical drawings.

Generally, two-dimensional technical drawings, like the two examplesdescribed above, are created at the outset of a construction project byarchitects, designers, engineers, or some combination thereof.Traditionally, these professionals would construct such two-dimensionaltechnical drawings by hand. But today, professionals typically constructtwo-dimensional technical drawings with the aid of computer draftingsoftware, such as existing CAD software known and used by professionalsin the industry.

Two-dimensional technical drawings have advantages. For instance, asingle two-dimensional technical drawing can visually communicate vastamounts of useful information. In some cases, construction professionalscan get an overview of an entire area of a construction project byreferring to a single technical drawing. Moreover, once created,technical drawings require a relatively small amount of computer storageand processing power to store and view. Construction professionals canoften review finished technical drawings with off-the-shelf softwaredocument viewers, such as portable document format (PDF) softwareviewers.

Yet two dimensional technical drawings have. because these technicaldrawings are typically created at the outset of the constructionproject—that is, well before construction has actually begun—thesedrawings generally will not reflect changes to the project that happenduring, say, the construction phase. When a change to the constructionproject happens after the technical drawings are completed, architects,designers, or engineers may be called upon to revise the existingtechnical drawings or create new drawings altogether to reflect thechange.

Additionally, technical drawings that are generated at the outset of theconstruction project may not always visually communicate the specificinformation desired by the construction professional who later accessesthe technical drawings. For instance, during construction a constructionprofessional may determine that it would be useful to have a technicaldrawing, such as an architectural plan, that shows only supportstructures made of concrete and does not show support structures madefrom other materials, such as steel. But such a technical drawing maynot be readily accessible because the complete set of technical drawingsmay have been already completed by that point. Thus, the constructionprofessional may have to wait, or go without, his or her desiredtechnical drawing. As mentioned, one solution to this issues would be tocall upon an engineer, designer, or architect to regenerate thetechnical drawings with this requested information. But this is often acostly and time-consuming process, which may not be feasible dependingon the project's budget as well as the stage of construction.

B. Three-Dimensional Visual Representations

As also mentioned, another way to visually represent information about aconstruction project is through a computerized, three-dimensional modelof the construction project. In order to facilitate the creation and useof a computerized, three-dimensional model of the construction project,a team of architects, designers, and/or engineers engage in a processreferred to as Building Information Modeling.

As a general matter, Building Information Modeling refers to the processof designing and maintaining a computerized representation of physicaland functional characteristics of a construction project, such as abuilding. Specialized software tools can then access this computerizedrepresentation and process it to visually communicate how to constructthe building via a navigable, three-dimensional model of the buildingand its infrastructure.

More specifically, but still by way of example, when architects,designers, and/or engineers engage in Building Information Modeling fora specific construction project, they generally produce what is referredto as a Building Information Model (BIM) file. In essence, a BIM file isa computerized description of the individual physical elements thatcomprise the construction project, such as the physical structure of thebuilding, including walls, floors, and ceilings, as well as thebuilding's infrastructure, including pipes, ducts, conduits, etc. Thiscomputerized description can include a vast amount of data describingthe individual physical elements of the construction project and therelationships between these individual physical elements, including forinstance, the relative size and shape of each element, and an indicationof where each element will reside in relation to the other elements inthe construction project.

BIM files can exist in one or more proprietary or open-sourcecomputer-file formats and are accessible by a range of specializedsoftware tools. One type of specialized software tool that can accessBIM files is referred to as a “BIM viewer.” A BIM viewer is softwarethat accesses the information contained within a BIM file or acombination of BIM files for a particular construction project and then,based on that file or those files, is configured to cause a computingdevice to render a three-dimensional view of the computerizedrepresentation of the construction project. This view is referred toherein as a “three-dimensional BIM view” or simply a “three-dimensionalview.”

In order for BIM viewer software to be able to cause a computing deviceto render a three-dimensional view of the construction project, BIMfiles typically contain data that describes the attributes of eachindividual physical element (e.g., the walls, floors, ceilings, pipes,ducts, etc.) of the construction project. For instance, for an air ductdesigned to run across the first-floor ceiling of a building, a BIM filefor this building may contain data describing how wide, how long, howhigh, and where, in relation to the other individual physical elementsof the construction project, the duct is positioned.

There are many ways for BIM files to arrange and store data thatdescribes the attributes of the individual physical elements of aconstruction project. In one specific example, BIM files may containdata that represents each individual physical component in theconstruction project (e.g., an air duct) as a mesh of geometrictriangles such that when the geometric triangles are visually stitchedtogether by BIM viewer software, the triangles form a mesh, whichrepresents a scaled model of the physical component (e.g., the airduct). In this respect, the BIM file may contain data that representseach triangle of a given mesh as set of coordinates in three-space. Forinstance, for each triangle stored in the BIM file, the BIM file maycontain data describing the coordinates of each vertex of the triangle(e.g., an x-coordinate, a y-coordinate, and a z-coordinate for the firstvertex of the triangle; an x-coordinate, a y-coordinate, and az-coordinate for the second vertex of the triangle; and an x-coordinate,a y-coordinate, and a z-coordinate for the third vertex of thetriangle). A given mesh may be comprised of thousands, tens ofthousands, or even hundreds of thousands of individual triangles, whereeach triangle may have a respective set of three vertices andcorresponding sets of three-space coordinates for those vertices.However, other ways for a BIM file to contain data that represents eachindividual physical component in a construction project are possible aswell.

To illustrate one example of a three-dimensional view, FIG. 4 depicts anexample snapshot 400 of a GUI, which includes a three-dimensional viewof a construction project rendered at a particular perspective. Snapshot400 may be generated by, for instance, a software tool running on aclient station, such as one of client stations 112 (FIG. 1 ), accessinga BIM file, and then rendering a three-dimensional view of theconstruction project based on that BIM file and presenting it via adisplay interface of that client station. Alternatively, a back-endplatform, such as back-end platform 102 (FIG. 1 ) may access a BIM fileand may generate a set of instructions for rendering a three-dimensionalview of the construction project based on that BIM file. Back-endplatform 102 may then send these instructions to one of client stations112, which in turn may present a three-dimensional view of theconstruction project it via a display interface of that client stationbased on these instructions. Still other arrangements are possible.

As depicted, snapshot 400 includes a three-dimensional view of aconstruction project from a particular perspective. Thethree-dimensional view depicted in FIG. 4 includes a number of meshesthat represent individual physical components of the constructionproject, such as floors, walls, pipes, and ducts, etc. In particular,depicted in FIG. 4 is, among others, a mesh 402, which represents an airduct, and a mesh 404, which represents a wall. Of course, in otherexamples, other meshes are possible as are other layouts and designs ofconstruction projects.

The client station presenting snapshot 400 may be configured to adjustthe perspective at which the three-dimensional view is presented inresponse to, for instance, receiving user inputs at the client station.The client station may do this in various ways. As one possibility, theclient station may reposition the perspective either forward or backwardalong an x-axis of the model in response to receiving a first type ofuser input via a peripheral, such as pressing the up arrow or down arrowon a keyboard or a click and drag with a mouse. The client station mayreposition the perspective laterally along a y-axis of the model inresponse to receiving a second type of user input via a peripheral, suchas pressing the left arrow or right arrow on a keyboard or a differenttype of click and drag with a mouse. The client station may repositionthe perspective either up or down along a z-axis of the model inresponse to receiving a third type of user input via a peripheral, suchas pressing a combination of keys on a keyboard (e.g., the Control keyand the up arrow, or the Control key and the down arrow) or yet adifferent type of click and drag with a mouse. The client station mayreposition the orientation of the perspective (i.e., the “camera” angle)in response to receiving a fourth type of user input via a peripheral,such as pressing a combination of keys on a keyboard (e.g., the Alt keyand the up arrow, or the Control key and the down arrow) or yet adifferent type of click and drag with a mouse.

As another possibility, the computing device may reposition theperspective simultaneously along a combination of one or more of thex-axis, the y-axis, and the z-axis of the model in response to receivinga first type of user input at a touch-screen of the computing device,such as a touch and drag gesture made with one finger. The computingdevice may reposition the orientation of the perspective in response toreceiving a second type of user input at a touch-screen of the computingdevice, such as a touch and drag gesture made with two fingers. However,other examples of adjusting the perspective at which thethree-dimensional view is presented are possible as well.

In addition to data describing the individual triangles of a mesh, someBIM files may contain additional data that helps to summarizeinformation relating to the various meshes. For instance, a BIM file maycontain, for each mesh, data describing a “bounding box.” Conceptually,a bounding box is an imaginary box surrounding the mesh on all sides,with the edges of this box being located at the outermost edges of themesh. As such, the entire mesh fits inside of this bounding box with nopart of the mesh protruding from the bounding box. In this way, thebounding box represents the maximum dimensions of the mesh inrectangular form. BIM viewer software may utilize bounding boxes storedin BIM files in various ways. For instance, it usually takes lessstorage space to store data describing a bounding box compared to datadescribing an entire mesh. This is due to the fact that a mesh maycomprise of many thousands of triangles in order to accurately representthe mesh's surface, which in some cases is irregular (e.g., the curvedsurface of a pipe), whereas a bounding box can typically be representedby data describing just eight vertices of a rectangular box. Some BIMviewer software may be configured to operate in a mode designed toconserve processing power and/or storage space in which the BIM viewersoftware causes a computing device to render just bounding boxes asopposed to rendering the full meshes. By doing so, the BIM viewersoftware can visually communicate a “low resolution” version of theconstruction project. Other ways of utilizing bounding boxes, and otherways of containing additional data to help summarize informationrelating to the various meshes, are possible as well.

BIM files may contain additional data as well, including data describingother attributes of the individual physical elements of the constructionproject that may or may not be related to the element's specificposition in three space. By way of example, this data may include datadescribing what system or sub-system the component is associated with(e.g., structural, plumbing, HVAC, electrical, etc.), data describingwhat material or materials the individual physical element is made of;what manufacturer the element comes from; what stage of manufacture theelement is in; where the element currently resides (e.g., dataindicating that the element is on a truck for delivery to theconstruction site, and/or once delivered, data indicating where at theconstruction site the delivered element resides); and/or variousidentification numbers assigned to the element (e.g., a serial number,part number, model number, tracking number, etc.), as well as others.

Together, these other attributes are generally referred to as metadata.BIM viewer software may utilize this metadata in various ways. Forinstance, some BIM viewer software may be configured to presentdifferent views based on metadata (e.g., displaying all meshes thatrepresent HVAC components but hiding all meshes that represent plumbingcomponents; and/or displaying meshes representing metal components in acertain color and displaying meshes representing wood components inanother color, etc.). Alternatively or additionally, BIM viewers candisplay certain subsets of the metadata based on user input. Forexample, a user may provide a user input to the BIM viewer softwarethough a click or tap on a GUI portion displaying a given mesh, and inresponse, the BIM viewer software may cause a GUI to display some or allof the attributes of the physical element represented by the given mesh.Other examples are possible as well.

As mentioned, BIM viewer software is generally deployed on clientstations, such as client stations 112 of FIG. 1 (which, as describedabove, can generally take the form of a desktop computer, a laptop, atablet, or the like). As such, construction professionals can utilizeBIM viewer software during all phases of the construction project andcan access a BIM file for a particular construction project in an officesetting as well as on the construction site. Accordingly, BIM viewersoftware assists construction professionals with, among other things,the design and construction of the project and/or to identify issuesthat may arise during such construction.

BIM technology has advantages. For instance, as described, BIM viewerscan use BIM files in order to render three-dimensional views (such asthe view depicted in snapshot 400 in FIG. 4) of various elements of theconstruction project. This can help construction professionals identifypotential construction issues prior to encountering those issues induring construction as well as conceptualize what the finished buildingwill look like.

However, existing BIM technology has certain limitations as well. Onelimitation is that three-dimensional BIM views may be cumbersome tonavigate about and may thus not present information as quickly orefficiently as a two-dimensional technical drawing. Additionally, whilethree-dimensional BIM views may display various meshes positioned aboutthe construction project, the three-dimensional BIM view may not displayprecise measurements associated with these meshes as doing so may tendto clutter, and perhaps obscure, the display of the overall project.Additionally, three-dimensional BIM views generally require morecomputing resources to render and display than traditionaltwo-dimensional technical drawings, which, as mentioned, can typicallybe presented in PDF form.

IV. EXAMPLE OPERATIONS

Disclosed herein is new software technology that is designed to helpremedy some of the aforementioned limitations with technology forrendering three-dimensional views of construction projects. Forinstance, disclosed herein is a software tool that generates atwo-dimensional drawing of a construction project based on athree-dimensional view of the construction project and a custom clipheight associated with the three-dimensional view. In one aspect, thedisclosed software tool may cause a computing device to generate atwo-dimensional technical drawing based on a BIM file and a given clipheight clip height associated with a given view rendered using the BIMfile. In another aspect, the disclosed software tool may cause acomputing device to generate a functional two-dimensional inset to athree-dimensional view of a BIM file based on the BIM file and a currentthree-dimensional BIM view. In yet another aspect, the disclosedsoftware tool may cause a computing device to generate a customdimension view that is arranged to present certain dimension informationrelated to one or more meshes.

Example operations that may be carried out by one or more computingdevices running the disclosed software tool are discussed in furtherdetail below. For purposes of illustration only, these exampleoperations are described as being carried out by a computing device,such as computing device 200 (FIG. 2 ), which as described above, mayserve as one or more of client stations 112 (FIG. 1 ) and/or back-endplatform 102 (FIG. 1 ). In this respect, it should be understood that,depending on the implementation, the operations discussed herein belowmay be carried out entirely by a single computing device, such as one ormore of client stations 112 or by back-end platform 102, or may becarried out by a combination of computing devices, with some operationsbeing carried out by back-end platform 102 (such as computationalprocesses and data-access operations) and other operations being carriedout by one or more of client stations 112 (such as display operationsand operations that receive user inputs). However, other arrangementsare possible as well.

To help describe some of these operations, flow diagrams may also bereferenced to describe combinations of operations that may be performedby a computing device. In some cases, a block in a flow diagram mayrepresent a module or portion of program code that includes instructionsthat are executable by a processor to implement specific logicalfunctions or steps in a process. The program code may be stored on anytype of computer-readable medium, such as non-transitory computerreadable media (e.g., data storage 204 (FIG. 2 )). In other cases, ablock in a flow diagram may represent circuitry that is wired to performspecific logical functions or steps in a process. Moreover, the blocksshown in the flow diagrams may be rearranged into different orders,combined into fewer blocks, separated into additional blocks, and/orremoved, based upon the particular embodiment. Flow diagrams may also bemodified to include additional blocks that represent other functionalitythat is described expressly or implicitly elsewhere herein.

A. Generating Two-dimensional Technical Drawings

As noted above, in one aspect, the disclosed software tool may cause acomputing device to carry out a process for generating a two-dimensionaltechnical drawing based on a BIM file and a given clip height associatedwith a given three-dimensional view rendered using the BIM file. Thisprocess may take various forms.

With reference now to flow diagram 500 of FIG. 5 , one example of aprocess carried out in accordance with the disclosed software tool forgenerating a two-dimensional technical drawing based on a BIM file and agiven clip height is illustrated and described. In practice, thisprocess may be commenced while the computing device is presenting athree-dimensional view via a GUI. In some implementations, for instance,the computing device may receive an indication that a user has requestedcreation of a two-dimensional technical drawing, such as through thepush of a button or the selection of a menu command. However, other waysto commence the process are possible as well.

Once the process is commenced, the process may generally involve thefollowing operations: (i) at block 502, while presenting a giventhree-dimensional view of a construction project based on a BIM file,the computing device may receive an indication of a desired clip heightof the given three-dimensional view at which to generate atwo-dimensional technical drawing, (ii) at block 504, the computingdevice identifies a given subset of the meshes within the BIM file thatintersect with a two-dimensional plane at the desired clip height, (iii)at block 506, the computing device determines respective portions ofeach mesh in the given subset of meshes that intersect thetwo-dimensional plane at the desired clip height, (iv) at block 508, thecomputing device compiles a dataset that defines the two-dimensionaldrawing, and (v) at block 510, the computing device may render thetwo-dimensional drawing using the compiled dataset. Each of theseoperations will now be discussed in further detail.

At block 502, the computing device receives an indication of a desiredclip height at which to generate a two-dimensional technical drawing. Inone implementation, the indication of the desired clip height may takethe form of a numerical indication of the desired clip height, which maybe input by a user via a keyboard, a mouse, a touchscreen, or the like.For instance, the computing device may present an input box via a userinterface of the computing device whereupon the user may enter into theinput box a desired clip height (e.g., “4 feet” or just “4”).

In some implementations, the indication of the desired clip height maytake the form of a graphical selection of a desired clip height, whichmay be input by a user via a keyboard, a mouse, a touchscreen, or thelike. To facilitate this, the computing device may display thethree-dimensional BIM view as though there is an invisibletwo-dimensional plane at a given clip height within thethree-dimensional BIM view, which spans the three-dimensional BIM viewand is parallel to the floor of the construction project. To indicatewhere the invisible two-dimensional plane is located, the computingdevice may be configured to adjust the three-dimensional view based onthe height of the invisible two-dimensional plane. For instance, thecomputing device may hide any meshes or portions of a mesh that lieabove the invisible two-dimensional plane but show any meshes orportions of a mesh that lie below the invisible two-dimensional plane.By doing so, the computing device presents a preview of the meshes thatwill be used to generate the two-dimensional technical drawing. Morespecifically, any meshes or portions of a mesh that lie above theinvisible two-dimensional plane (and are thus not displayed) will not bevisible on the two-dimensional technical drawing.

To illustrate this, FIGS. 6A and 6B depict example snapshots of a GUIthat includes respective three-dimensional BIM views with invisibletwo-dimensional planes positioned at different respective clip heights.In particular, FIG. 6A depicts an example snapshot 601 a that depicts athree-dimensional BIM view with an invisible two-dimensional planepositioned at a height of about nine feet. Accordingly, most of themeshes, including meshes depicting ceiling ductwork, are visible. FIG.6B depicts an example snapshot 601 b that depicts a similarthree-dimensional BIM view as that depicted in FIG. 6A but with aninvisible two-dimensional plane positioned at a lower height of aboutfour feet. In accordance with the example implementation describedabove, several meshes, including meshes depicting ceiling ductwork aswell portions of meshes depicting the walls, are not visible. It shouldbe appreciated that in other implementations, the computing device maypresent a three-dimensional BIM in which the two-dimensional plane isvisible within the three-dimensional view.

To further facilitate providing a graphical selection of the desiredclip height, the computing device may be configured to move theinvisible two-dimensional plane in response to receiving a user input.The computing device may facilitate this in any number of differentways.

As one possibility, the computing device may move the invisibletwo-dimensional plane in response to receiving a particular type of userinput that is associated with moving the invisible two-dimensionalplane, such as pressing an up or down arrow on a keyboard, scrolling thewheel of a mouse in a given direction, or inputting a touch and draggesture in a given direction on a touch screen. For example, an upwardtouch and drag gesture may cause the computing device to reposition theinvisible two-dimensional plane upward along the vertical axis of thethree-dimensional BIM view while a downward touch and drag gesture maycause the computing device to reposition the invisible two-dimensionalplane lower along the vertical axis of the three-dimensional BIM view.

While moving the invisible two-dimensional plane in response toreceiving the given type of user input, the computing device may alsoupdate the three-dimensional BIM view based on the movement of theinvisible two-dimensional plane. For instance, in the case where theinvisible two-dimensional plane is moved upward along the vertical axisof the three-dimensional BIM view, the computing device may respond byupdating the three-dimensional BIM view by bringing into view meshes orportions of meshes that lie below the new position of the invisibletwo-dimensional plane. In the case where the invisible two-dimensionalplane is moved downward along the vertical axis of the three-dimensionalBIM view, the computing device may respond by removing from view meshesor portions of meshes that lie above the new position of the invisibletwo-dimensional plane.

As another possibility, the GUI presented by the computing device mayinclude a navigational interface element through which a user mayprovide a user input that causes the computing device to move theinvisible two-dimensional plane, in which case the computing device maymove the invisible two-dimensional plane in response to user interactionwith this navigational interface element. In one example of this, thenavigational interface element may be a virtual joystick, such asjoystick 603 a in FIG. 6A or joystick 603 b in FIG. 6B, that a user cantouch and drag in an upward or downward direction. In this example, whenthe computing device receives a user input that drags the joystick inthe upward direction, the computing device may responsively move theinvisible two-dimensional plane upward along the vertical axis of thethree-dimensional BIM view. Likewise, when the computing device receivesa user input that drags the joystick in the downward direction, thecomputing device may responsively move the invisible two-dimensionalplane downward along the vertical axis of the three-dimensional BIMview. When the user releases the joystick, the computing device may stopmoving the invisible two-dimensional plane.

Once the invisible two-dimensional plane is in the desired position, thecomputing device may receive a confirmation that the invisibletwo-dimensional plane is in the desired position, such as by receiving auser selection of an “Enter” key on a keyboard, a mouse click, or a tapon the screen, among other possibilities.

The indication of the desired clip height at which to generate thetwo-dimensional technical drawing may take various other forms and bereceived by the computing system in various other manners as well.

Returning to FIG. 5 , at block 504, the computing device identifies,from the set of meshes included in the BIM file, a given subset ofmeshes that intersect with a two-dimensional plane at the desired clipheight. The computing device may perform this identification operationin various manners.

In one implementation, the computing device searches through the datadefining the set of meshes included in the BIM file and identifiesmeshes that have at least one triangle that intersects with thetwo-dimensional plane. For any mesh that has at least one triangle thatintersects with the two-dimensional plane, the computing device may thenadd that mesh to the given subset of meshes.

Depending on the size of the construction project, and thus the size ofthe BIM file, searching through the data defining the set of meshesincluded in the BIM file could take considerable time and computingresources, particularly in cases where the BIM file contains datadefining many hundreds or thousands of meshes and thus data definingperhaps hundreds of thousands of triangles. Thus, in anotherimplementation, the computing device may be configured to (1) reduce thedata set within which the computing device searches for meshes thatintersect with the two-dimensional plane by identifying a first subsetof meshes that have a bounding box that intersects with thetwo-dimensional plane and then (2) from among this first subset ofmeshes, identify a second subset of meshes that contain at least onetriangle that intersects with the two-dimensional plane. By firstnarrowing the subset of meshes to just those that have a bounding boxthat intersects with the two-dimensional plane, and then searchingthrough this subset, the computing device may reduce and therebyconserve processing power that may be used to perform this operation,resulting in a more efficient and perhaps faster process.

At block 506, for each respective mesh in the given subset of meshesthat is determined to be intersecting with the two-dimensional plane,the computing device determines the portion of the respective mesh thatintersects with the two-dimensional plane. The computing device mayperform this identification operation in various manners.

In one implementation, each respective mesh in the given subset ofmeshes may be comprised of a respective set of triangles, andgeometrically, and an intersection between the two-dimensional plane anda triangle may be defined by a line segment connecting two coordinatesat this intersection. In this respect, the computing device maydetermine the portion of a mesh that intersects with the two-dimensionalplane by (1) identifying the coordinates of each line segment formed asa result of the two-dimensional plane intersecting with each triangle ofthe respective mesh and (2) combining the line segments together to forma two-dimensional shape thereby defining the portion of the mesh thatintersects with the two-dimensional plane. However, the computing devicemay determine the portion of the respective mesh that intersects withthe two-dimensional plane in various other manners as well.

Further, the data defining the portions of a mesh that intersect withthe two-dimensional plane may take various forms. In one example, thisdata may comprise a set of x-y coordinates, where each set of x-ycoordinates represents the end points of a line segment formed as aresult of an intersection between a respective triangle of a mesh andthe two-dimensional plane. In another example, this data may comprise aset comprise x-y-z coordinates; but the z-coordinate can often beomitted in practice because the coordinates in the set will have thesame z-coordinate. The data defining the portions of a mesh thatintersect with the two-dimensional plane may take other various forms aswell.

At block 508, the computing device may then compile a dataset thatdefines a two-dimensional drawing based on the determined portions ofmeshes that intersect with the two-dimensional plane. In oneimplementation, the computing device may compile the dataset definingthe two-dimensional drawing by generating data defining respective linesegments that represent the various portions of meshes that intersectwith the two-dimensional plane, such that when the respective linesegments are arranged on a two-dimensional display, they depict atwo-dimensional view of the construction project at the desired clipheight. The computing device may also include within this dataset dataindicating an association between the line segments and the respectivemeshes represented by the line segments. For instance, each line segmentin the dataset represents a particular mesh from the BIM file.Accordingly, for each line segment in the compiled dataset, thecomputing device may generate data describing the association betweenthat line segment and the particular mesh from which the line segmentwas determined.

At block 510, the computing device may render a two-dimensional drawingusing the compiled dataset. In one implementation of this, the computingdevice arranges the various line segments defined by the compileddataset in a two-dimensional view and presents this view via a displayinterface of the computing device.

To illustrate an example of this, FIG. 7 depicts an example snapshot 700of a GUI that includes a view of a two-dimensional drawing 702 generatedby the computing device in accordance with the above operations. Asdepicted, two-dimensional drawing 702 includes several line segmentsthat represent portions of meshes that intersect with a two-dimensionalplane at a desired clip height as depicted in FIG. 6B. Among others,these line segments include line segments 704, which represent portionsof meshes that represent walls in the construction project.

The computing device may be configured to adjust the display based onuser input received at the computing device. For instance, as onepossibility, in response to receipt of a user input selecting one of theparticular line segments of the two-dimensional drawing (e.g., by a tapof one of the lines on a touch-screen interface or by positioning amouse cursor over a line and then clicking the mouse), the computingdevice may refer to the compiled dataset to determine with which meshthe particular line segment is associated. Once determined, thecomputing device may then display some or all of the metadata associatedwith the determined mesh (e.g., what material the physical elementrepresented by the mesh is made of, where the physical elementrepresented by the mesh is located, and/or a part or model number of thephysical element represented by the mesh).

As another possibility, the computing device may be configured toalternate between presenting the two-dimensional drawing and presentinga three-dimensional BIM view. In one specific example of this, thecomputing device may present the two-dimensional drawing via a displayinterface of the computing device and in response to receipt of a userinput selecting one of the particular line segments of thetwo-dimensional drawing (e.g., by a tap of one of the line segments on atouch-screen interface or by positioning a mouse cursor over a linesegment and then clicking the mouse), the computing device may refer todata in the compiled dataset describing the association between the linesegment and a particular mesh and thereby determine the mesh with whichthe particular line segment is associated. Once determined, thecomputing device may present a three-dimensional BIM view and orient theperspective of the three-dimensional BIM view so as to bring theparticular mesh into view.

The computing device may present additional information on thetwo-dimensional drawing as well, including dimension information, suchas indications of the length of particular line segments or the distancebetween two or more line segments. In another example, the computingdevice may add in labels for the particular line segments, such as“conference room wall” or “air register return.” Other examples arepossible as well.

B. Generating a Functional Inset

In another aspect, the disclosed software tool may cause a computingdevice to carry out a process for creating a more functional,two-dimensional inset within a three-dimensional view of a constructionproject.

As mentioned, some BIM viewer software may display an inset (usually inthe top left or top right corner of the screen) when displaying athree-dimensional BIM view. Returning to FIG. 4 , depicted therein anexample inset 406 positioned in the upper left corner of snapshot 400,although other examples of insets are possible. Generally, an insetprovides a top-down view of the entire construction project as well asperhaps a rough indication of where within the construction project thecurrent point of view of the three-dimensional BIM view is located. Asdepicted on inset 406, for instance, an indicator 408 is included thatindicates the rough position within the inset at which the current pointof view is located.

However, this inset tends to not be as functional as may be desired. Forinstance, in some cases, the inset is created by the person or peoplewho generated the BIM file, and as such, may simply be an outline thatdisplays the outer walls of a project, but no inner walls or otherdetail. As such, the inset may not provide a precise indication of wherewithin the construction project the current point of view is located.And given that the inset typically displays just a rough outline of theconstruction project, use of the inset to navigate about thethree-dimensional BIM view tends not be accurate as well. For instance,in implementations where BIM viewer software is configured to repositionthe current point of view of the three-dimensional BIM view based on auser input (such as a tap) received at the inset, navigating by tappingthe inset tends not to be accurate. For instance, a user that desires tonavigate the three-dimensional BIM view by tapping the inset to bring aparticular room of the construction project into view may have to guesswhere that room is located in the inset because the internal walls ofthe construction project are not displayed.

In view of this drawback, some software tools offer an alternative tousing the inset designed by the person or people who generated the BIMfile, and are instead configured to use an external two-dimensionaltechnical drawing as the inset (e.g., a PDF of an architectural plan).Such software tools may facilitate this by shrinking the PDF down andpositioning it in the corner of the user interface. But this has certaindrawbacks as well. For instance, using an external two-dimensionaltechnical drawing as an inset typically removes the ability to interactwith the inset to navigate. In essence, the inset becomes merely areference without any navigational functionality. Further,two-dimensional technical drawings may not have the ability to use anindicator to indicate the position of the point of view of thethree-dimensional BIM view.

The disclosed software tool improves upon this existing technology forpresenting a two-dimensional inset within a three-dimensional view of aconstruction project, by enabling a computing device to carry out aprocess for generating a two-dimensional inset based on an externaltwo-dimensional technical drawing file and a BIM file. This process maytake various forms.

With reference now to flow diagram 800 of FIG. 8A, one example of aprocess carried out in accordance with the disclosed software tool forgenerating a two-dimensional inset based on an external two-dimensionaltechnical drawing file and a BIM file is illustrated and described. Inpractice, this process may be commenced while the computing device ispresenting a three-dimensional BIM view via a GUI. In someimplementations, for instance, the computing device may receive anindication that a user has requested creation of a functional inset,such as the push of a button or the selection of a menu command.However, other ways to commence the process are possible as well.

Once the process is commenced, the process may generally involve thefollowing operations: (i) at block 802, the computing device generates atop-down, two-dimensional drawing of the three-dimensional BIM view at agiven clip height, (ii) at block 804, the computing device may retrievefrom data storage a technical drawing file, (iii) at block 806, thecomputing device may use a pattern matching technique to match portionsof the generated top-down two-dimensional drawing with portions of theretrieved technical drawing file, and (iv) at block 808, the computingdevice overlays the top-down two-dimensional drawing onto the retrievedtechnical drawing file in accordance with the results of the patternmatching to thereby create a functional inset. Each of these operationswill now be discussed in further detail.

At block 802, the computing device generates a top-down two-dimensionaldrawing of the three-dimensional BIM view at a given clip height. In oneimplementation, the computing device generates the top-downtwo-dimensional technical drawing by engaging in a process similar tothat described above with respect to flow diagram 500 in FIG. 5 , withthe caveat that the given clip height may either be determined based onuser input (as described above) or may be predefined in the software asa default clip height value (e.g., four feet). However, the computingdevice may generate a top-down two-dimensional drawing of thethree-dimensional BIM view at a given clip height using other techniquesas well.

The top-down two-dimensional drawing generated in block 802 may havesimilar functionality as the two-dimensional drawing generated as aresult of the process described above with respect to flow diagram 500in FIG. 5 . For instance, the top-down two-dimensional drawing generatedin block 802 may comprise various line segments representing variousmeshes in the BIM file. As such, the top-down two-dimensional drawingmay be arranged such that when the computing device receives a userinput selecting one of the line segments of the top-down two-dimensionaldrawing (e.g., by a tap of one of the lines on a touch-screen interfaceor by positioning a mouse cursor over a line and then clicking themouse), the computing device may be configured to display some or all ofthe metadata associated with the determined mesh (e.g., what materialthe physical element represented by the mesh is made of, where thephysical element represented by the mesh is located, and/or a part ormodel number of the physical element represented by the mesh). Further,the computing device may configured to adjust the presentation of athree-dimensional BIM view based on a user input selecting one of theline segments of the top-down two-dimensional drawing. Specifically, inresponse to receipt of a user input selecting one of the particular linesegments of the top-down two-dimensional drawing (e.g., by a tap of oneof the line segments on a touch-screen interface or by positioning amouse cursor over a line segment and then clicking the mouse), thecomputing device may present a three-dimensional BIM view and orient theperspective of the three-dimensional BIM view such that the meshrepresented by the particular line segment is in depicted in thethree-dimensional BIM view. Other functionality is possible as well.

At block 804, the computing device may retrieve from data storage atechnical drawing file, such as a CAD drawing or an architectural planthat exists in electronic form (e.g., PDF). For instance, as onepossibility, the computing device may retrieve the technical drawingfile in response to receiving a user input directing the computingdevice to the location in data storage of the technical drawing file.However, other ways of retrieving a technical drawing file from datastorage are possible as well.

At block 806, the computing device may use a pattern matching techniquein order to match portions of the generated top-down two-dimensionaldrawing with portions of the retrieved technical drawing file. Forexample, the computing device may engage in a technique where itattempts to align the lines of the generated top-down two-dimensionaltechnical drawing with lines on the retrieved technical drawing file. Ata high level, this may involve rotating and/or resizing the top-downtwo-dimensional technical drawing until it substantially matches theretrieved technical drawing file. Other ways to engage in patternmatching techniques are possible as well.

To help illustrate one example of how a computing device may use apattern matching technique in order to match portions of the generatedtop-down two-dimensional drawing with portions of the retrievedtechnical drawing file, reference will now be made to an additional flowdiagram 810 depicting an example process for using a pattern matchingtechnique in order to match portions of the generated top-downtwo-dimensional drawing with portions of the retrieved technical drawingfile. This process may generally involve the following operations: (i)at block 812, the computing device identifies match conditions on thegenerated top-down two-dimensional drawing and the retrieved technicaldrawing file, (ii) at block 814, the computing device compares the matchfeatures identified at block 812 in order to appropriately scale andalign the respective drawings, and (iii) at block 816, the computingdevice may next assign unified coordinate position markups to theretrieved technical drawing file. Each of these operations will now bediscussed in further detail.

It should be understood, however, that although this example process isdescribed with reference to using a generated top-down two-dimensionaldrawing (e.g., at block 812 by identifying match conditions on thegenerated top-down two-dimensional drawing and the retrieved technicaldrawing file), a computing device may engage in the disclosed patternmatching technique by using two-dimensional drawings other thangenerated top-down two-dimensional drawings. For instance, a computingdevice engaging in the disclosed pattern matching technique may use atraditional two-dimensional CAD drawing or other two-dimensionaltechnical drawing file instead of a generated top-down two-dimensionaldrawing file.

Turning first to block 812, the computing device identifies matchconditions on the generated top-down two-dimensional drawing and theretrieved technical drawing file. As described, the generated top-downtwo-dimensional drawing may be similar to the technical drawinggenerated in the manner described above with respect to flow diagram 500in FIG. 5 , and the retrieved technical drawing file may be similar tothe examples described above with respect to block 804 in flow diagram800 in FIG. 8A (e.g., a CAD drawing or an architectural plan that existsin electronic form, such as in PDF form).

As a general matter, match conditions are certain identifiable featuresof a technical drawing—including, for instance, gridlines, convex orconcave corners, other primitive shapes in the drawing, or distancesbetween such shapes—that the computing device may use to compare twodifferent drawings. In accordance with one example of identifying matchfeatures on a generated top-down two-dimensional drawing and a retrievedtechnical drawing file, the computing device may identify one or moreconvex or concave corners of each drawing and mark each corner with apoint. To illustrate, FIG. 9A depicts a generated top-downtwo-dimensional drawing 900 and FIG. 9B depicts a retrieved technicaldrawing 901. In accordance with the example mentioned above, thecomputing device may identify the convex or concave corners 902, 904,906, 908, 910, 912 and 914 on generated top-down two-dimensional drawing900 and mark each corner with a respective point. Similarly, thecomputing device may identify the convex or concave corners 903, 905,907, 909, 911, 913, and 915 on retrieved technical drawing 901 and markeach corner with a respective point. In this way, the collection ofpoints created as a result of identifying match features on each of thegenerated top-down two-dimensional drawing and the retrieved technicaldrawing file forms a respective point cloud (i.e., a first point cloudassociated with the identified match features on the generated top-downtwo-dimensional drawing, and a second point cloud associated with theidentified match features on the retrieved technical drawing file).Other ways of identifying match conditions on the generated top-downtwo-dimensional drawing and the retrieved technical drawing file arepossible as well.

At block 814, the computing device compares the match featuresidentified at block 812 in order to appropriately scale and align therespective drawings. In one example of this, the computing device usesthe respective point clouds (e.g., the first and second point clouds,which were generated as a result of identifying the match features ofeach drawing) to align and scale the respective drawings. For instance,the computing device may utilize a best-fit algorithm—such as aleast-squares technique, a computer-vision technique, or a combinationof a the least-squares technique and the computer-vision technique—inorder to arrive at one or more best fit solutions in which the firstpoint cloud is aligned with the second point cloud. In general, thebest-fit solution will be the alignment in which the highest percentageof match features identified on the generated top-down two-dimensionaldrawing and the retrieved technical drawing are aligned. In cases inwhich there is a single best-fit solution, the computing device mayaccept this solution and proceed to the next step. However, in cases inwhich there are multiple best-fit solutions, the computing device mayanalyze each possible best-fit solution using a combination of a machinelearning technique and a computer vision technique to narrow thepossible best-fit solutions to a single best-fit solution. The computingdevice may then accept this best-fit solution and proceed to the nextstep.

At block 816, with the first point cloud aligned with the second pointcloud, and thus the retrieved technical drawing aligned with thegenerated top-down two-dimensional drawing, the computing device maynext assign “a unified coordinate system” to the retrieved technicaldrawing file.

For instance, as explained above with respect to flow diagram 500 ofFIG. 5 , for the generated top-down two-dimensional drawing, thecomputing device compiled a dataset that defines this drawing with datarepresenting the respective line segments of the drawing. On a moregranular level, this data may be represented by coordinates that definethe respective line segments of the drawing with respect to an overallcoordinate system utilized by the underlying BIM file (referred toherein as “a unified coordinate system” or “the unified coordinatesystem”). By contrast, the data contained on the original retrievedtechnical drawing file (e.g., the line segments of the technical drawingand so forth) may be represented by coordinates that define this datawith respect to the pixel dimensions of the drawing. In accordance withthe functionality set forth here at block 816, the computing device mayassociate the coordinate data defined in the retrieved technical drawingwith the unified coordinate system (by creating a mapping between thetwo coordinates, and/or by changing the coordinates of the retrievedfile to the unified system, among other possibilities). The computingdevice may do this by (i) referring to various portions of the top-downgenerated two-dimensional drawing, (ii) retrieving the unifiedcoordinate data that defines these portions with respect to the unifiedcoordinate system, and (iii) applying the same unified coordinate datato corresponding portions of the retrieved technical drawing. Other waysof assigning a unified coordinate system to the retrieved technicaldrawing file are possible as well.

When the pattern matching is complete and the coordinate systems havebeen mapped to each other, data input on one drawing may be readilyassociated with another drawing. For example, if markup information(e.g., a “request for information” (RFI), an observation, a punch item,etc.) is added to one drawing (for example by a constructionprofessional using Procore's drawing tool), that markup information maybe mapped to and added to a corresponding location on another drawing.For instance, if a user associates RFI data with a location of atechnical drawing file, in accordance with the forgoing process this RFIinformation may be associated with and mapped to a correspondinglocation in other drawing files, such as top-down two-dimensionaldrawings generated from the underlying BIM file. By doing so, whenconstruction professionals update the RFI information in a given drawingfile, (e.g., by using a drawing tool provided by Procore), the updatecan be reflected on each additional drawing that may become associatedwith the given drawing file. It should be understood that such updatesmay also be added/reflected in the underlying BIM file as well.Accordingly, construction professionals that utilize a multitude ofdifferent software tools to access the underlying BIM file can haveaccess to consistent information.

Returning to FIG. 8A, at block 808A, once pattern matching is complete,the computing device overlays the top-down two-dimensional drawing ontothe retrieved technical drawing file in accordance with the patternmatching technique to thereby create a functional inset. In someimplementations of this, the computing device overlays the top-downtwo-dimensional drawing but hides the lines of the generated drawingfrom view. In this way, just the lines from the two-dimensional drawingfile (e.g., the PDF CAD file) are visible, but functionality associatedwith the top-down two-dimensional drawing subsists.

As explained above, the computing device generates the top-downtwo-dimensional drawing by engaging in a process similar to thatdescribed above with respect to flow diagram 500 in FIG. 5 . As such,the computing device may store a similar association between the linesof the top-down two-dimensional drawing and the meshes in the BIM filethat are represented by these lines. In this way, the computing devicemay be similarly configured to respond to user inputs received at ornear a particular line of the top-down two-dimensional drawing bydisplaying additional data associated with the mesh represented by theparticular line.

For instance, in response to receipt of a user input selecting aspecific area of the functional inset (e.g., by a tap on a touch-screeninterface or by positioning a mouse cursor over the inset then clickingthe mouse), the computing device may recognize the user input asselecting the specific area of the top-down two-dimensional drawing,which was overlaid on the drawing file (but hidden from view) to formthe functional inset. If the specific area includes a line segment, thecomputing device may then refer to the data describing the associationbetween the line segment and a particular mesh to identify theparticular mesh with which the line segment is associated. Oncedetermined, the computing device may then display some or all of themetadata associated with the particular mesh (e.g., what material thephysical element represented by the mesh is made of, where the physicalelement represented by the mesh is located, and/or a part or modelnumber of the physical element represented by the mesh). As anotherpossibility, the computing device may adjust the display of thethree-dimensional BIM view in order to orient the point of view of thethree-dimensional BIM view such that the particular mesh is visible.However, other responsive actions are possible as well.

C. Generating Dimension Views

In yet another aspect, the disclosed software tool may cause a computingdevice to use a BIM file as a basis for generating additionaldimensioning information related to a construction project, such asdimensioning information relating to one or more physical elements(e.g., the distance between two ducts, or the distance between a ceilingand a pipe), which may not be expressly specified in any availabletwo-dimensional technical drawing or readily discernible from anythree-dimensional BIM view.

For example, consider the example construction project scenario whereconstruction plans may call for a collection of multiple pipes to runparallel to a floor. An ordinary two-dimensional technical drawing, suchas a blueprint, may not indicate the distance between each pipe.Moreover, a three-dimensional BIM view may provide a view of thecollection of pipes from various angles and may be operable to displayinformation about each individual pipe, such as the dimensions andmaterial of each pipe. But perhaps no three-dimensional BIM view or anyother specification document indicates the distance between each pipe.To illustrate this example scenario, FIG. 10 depicts an example snapshot1000 of a GUI, which includes a three-dimensional view of a constructionproject rendered at a particular perspective. As depicted in snapshot1000, the construction project includes a cluster of several pipes,including pipes 1002, 1004 a, and 1004 b. And as also depicted, thisparticular three-dimensional view provides no indication specifyingdimension information for pipes 1002, 1004 a, and 1004 b. When aconstruction professional desires this information, the constructionprofessional would typically derive it based on his or her owncalculation, accounting for, among other things, the known dimension ofan individual pipe, the total number of pipes in the collection, how farthe first pipe is from the near wall, and how far the last pipe is fromthe far wall.

The disclosed software tool improves upon this existing approach forderiving dimensioning information, by enabling a computing device tocarry out a process that uses a BIM file and a custom area of interestdefined by using a three-dimensional BIM view to generate a customtwo-dimensional view containing dimensioning information, which may bereferred to hereinafter as a dimension view. This process may takevarious forms.

With reference now to flow diagram 1100 of FIG. 11 , one example of aprocess carried out in accordance with the disclosed software tool forgenerating a custom two-dimensional view containing dimensioninginformation is illustrated and described. In practice, this process istypically commenced while the computing device is displaying athree-dimensional BIM view via a GUI. In some implementations, forinstance, the computing device may receive an indication from the userrequesting the creation of a dimension view, such as the push of abutton or the selection of a menu command. However, other ways tocommence the process are possible as well.

Once the process is commenced, the process generally involves thefollowing operations: (i) at block 1102, the computing device receives auser input identifying an area of interest that includes at least onemesh, (ii) at block 1104, the computing device identifies from among themeshes in the BIM file a subset of meshes that intersect with the areaof interest, (iii) at block 1106, the computing device determines theportions of the meshes that intersect with the area of interest, and(iv) at block 1108, the computing device generates a two-dimensionaldrawing including a display of relevant dimensioning information basedon the determined portions. Each of these operations will now bediscussed in further detail.

At block 1102, while the computing device is presenting athree-dimensional BIM view rendered using a BIM file, the computingdevice may receive a user input that identifies an area of interestcontaining at least one mesh. In one implementation of this, thecomputing device may receive a user input, such as a touch and drag, andresponsively generate a two-dimensional plane on the GUI. To helpillustrate this, FIG. 12A depicts an example snapshot 1200 of a GUI,which includes a three-dimensional view of the construction projectdepicted in snapshot 1000 (FIG. 10 ). Further depicted in snapshot 1200is an example two-dimensional plane 1202, which may be rendered anddisplayed by the computing device at the commencement of the process.Additionally, FIG. 13A depicts another example snapshot 1300 of a GUI,which includes a three-dimensional view of the construction projectdepicted in snapshot 1000 (FIG. 10 ). Further depicted in snapshot 1300is an example two-dimensional plane 1302, which may be rendered anddisplayed by the computing device at the commencement of the process.

The computing device may be configured to reposition the two-dimensionalplane 1202 and/or the two-dimensional plane 1302 by rotating it,resizing it, or repositioning it along one or more of the three axes ofthe three-dimensional BIM view based on receipt of a respective userinput, such as a touch and drag, among others. Once the two-dimensionalplane 1202 and/or the two-dimensional plane 1302 is in a desiredposition (which, in the example depicted by FIG. 12A, may be a positionthat intersects, and is perpendicular to, pipes 1004 a and 1004 b, andin the example depicted by FIG. 13A, may be a position that intersects,and is perpendicular to, pipes 1004 a and 1002), the computing devicemay receive a confirmation that the area of interest is located in thedesired location. In one implementation of this, the computing devicereceives an indication that the two-dimensional plane is in the desiredlocation, by, for instance, receiving a user input, such as a tap ormouse click.

At block 1104, the computing device may identify from among the meshesin the BIM file a subset of meshes that intersect with the area ofinterest. In one implementation, the computing device identifies meshesthat intersect with the area of interest (e.g., two-dimensional plane1202 and/or 1302) using a process similar to that described above withrespect to flow diagram 500 in FIG. 5 . That process is described infurther detail above with respect to flow diagram 500 and, for brevity'ssake, is not repeated again here in detail. As general matter, however,the process includes, in one implementation, the computing deviceidentifying a first subset of meshes that have a bounding box thatintersects with the two-dimensional plane, and from among this firstsubset of meshes, identifying a second subset of meshes that contain atleast one triangle that intersects with the two-dimensional plane.Referring back to FIG. 12A, in this example the computing device maydetermine that the area of interest intersects with pipes 1004 a and1004 b, and thus the computing device may identify the meshes associatedwith pipes 1004 a and 1004 b. And in the example depicted by FIG. 13A,the computing device may determine that the area of interest intersectswith pipes 1004 a and 1002 and thus the computing device may identifythe meshes associated with pipes 1004 a and 1002.

At block 1106, for each given mesh the computing device determined to beintersecting with the area of interest (e.g., the two-dimensionalplane), the computing device determines the portion of the given meshthat intersects with the area of interest. In one implementation, agiven portion of a mesh that intersects with the area of interest maytake the form of a compilation of line segments formed as a result oftriangles representing the mesh intersecting with the two-dimensionalplane. Thus, a computing device may determine a portion of a mesh thatintersects with the area of interest in largely the same processdescribed above with respect to flow diagram 500. As described above,this generally includes the computing device using geometry to determinethe coordinates of each line segment formed as a result of thetwo-dimensional plane intersecting with the triangles

At block 1108, once the computing device determines the portions of eachmesh that intersect with the area of interest, the computing devicegenerates a two-dimensional drawing based on these determined portionsby drawing corresponding line segments onto a two-dimensional displayand supplementing this two-dimensional display with relevant dimensioninformation based on coordinates of the line segments. To illustratethis, FIG. 12B depicts an example snapshot 1210 of a GUI, which includesa three-dimensional view of the construction project depicted insnapshot 1000 (FIG. 10 ) and 1200 (FIG. 12A). Further depicted insnapshot 1210 is an example two-dimensional drawing 1212 that may begenerated at block 1108. As depicted, two-dimensional drawing 1212 mayinclude line segments representing the portions of the identified meshes1004 a and 1004 b that intersected with the two-dimensional plane 1202(FIG. 12A). Similarly, FIG. 13B depicts an example snapshot 1310 of aGUI, which includes a three-dimensional view of the construction projectdepicted in snapshot 1000 (FIG. 10 ) and 1300 (FIG. 13A). Furtherdepicted in snapshot 1310 is an example two-dimensional drawing 1312that may be generated at block 1108. As depicted, two-dimensionaldrawing 1312 may include line segments representing the portions of theidentified meshes 1004 a and 1002 that intersected with thetwo-dimensional plane 1302 (FIG. 13A).

The computing device may supplement the two-dimensional drawing withdimension information in various ways. As one possibility, the computingdevice may identify any vertices present in the two-dimensional display(e.g., connection points formed between two different line segments thatshare one endpoint). The computing device may then use the coordinatesof the lines segments to provide an indication of the dimensions of theportions of the mesh between the vertices. As another possibility, thecomputing device may identify the left-most line segment of thetwo-dimensional display and the right-most line segment of thetwo-dimensional display. The computing device may then use coordinatesof these line segments to provide an indication of the distance betweenthese two line segments. As yet another possibility, the computingdevice may identify line segments that are associated with differentmeshes. The computing device may then use the coordinates of the linesegments to provide an indication of the distance between the linesegments of different meshes.

As depicted in FIG. 12B, the computing device may supplementtwo-dimensional drawing 1212 with dimension information 1214, whichindicates the distance between pipe 1004 a and pipe 1004 b. Likewise, asdepicted in FIG. 13B, the computing device may supplementtwo-dimensional drawing 1312 with dimension information 1314 and 1316,which indicates the vertical and horizontal distances, respectively,between pipe 1004 a and pipe 1002.

Turning now to flow diagram 1400 of FIG. 14 , an example of anotherprocess carried out in accordance with the disclosed software tool forgenerating a custom two-dimensional view containing dimensioninginformation is illustrated and described. In practice, this process istypically commenced while the computing device is displaying athree-dimensional BIM view via a GUI. In some implementations, forinstance, the computing device may receive an indication from the userrequesting the creation of a dimension view, such as the push of abutton or the selection of a menu command. However, other ways tocommence the process are possible as well.

Once the process is commenced, the process generally involves thefollowing operations: (i) at block 1402, the computing device receives auser input identifying at least one first mesh and at least one secondmesh, (ii) at block 1404, the computing device determines the portionsof each identified mesh that intersect with a two-dimensional plane, and(ii) at block 1406, the computing device generates a two-dimensionaldrawing including a display of relevant dimensioning information basedon the determined portions. Each of these operations will now bediscussed in further detail.

At block 1402, while the computing device is presenting athree-dimensional BIM view rendered using a BIM file, the computingdevice may receive a user input that identifies at least one first meshand at least one second mesh for which it is desired to view dimensioninformation. In one implementation of this, the computing device mayreceive a first user input, such as a mouse click or a tap on a firstmesh being displayed in the three-dimensional BIM view, and a seconduser input, such as another mouse click or tap on a second mesh beingdisplayed in the three-dimensional BIM view.

To help illustrate one example of this, FIGS. 15A-C depict examplesnapshots 1500, 1510, and 1520, respectively, of GUIs that includethree-dimensional views of a construction project. As depicted in eachsnapshot, the three-dimensional view of the construction project mayinclude a view of several meshes that represent various physicalelements in the construction project, such as mesh 1502, which mayrepresent a wall, and mesh 1504, which may represent a support girder,among other possible examples. As indicated, in one implementation thecomputing device may receive a user input identifying a first mesh by,for instance, receiving a user input in the form of a mouse click or atap on one of the displayed meshes. In the examples depicted in FIGS.15A-C, the computing device may receive a user input in the form of amouse click or a tap on an area displaying mesh 1502, which thecomputing device may responsively regard as an identification of a firstmesh. Similarly, the computing device may receive a user input in theform of a mouse click or a tap on an area displaying mesh 1504, whichthe computing device may responsively regard as an identification of asecond mesh. The computing device may receive a user input identifying afirst mesh in other ways as well.

In some implementations, the computing device may present on the GUIvarious visual indications that may help facilitate selection of a meshor may help identify a mesh that has been selected. As one possibility,the computing device may present a message that prompts a user to selecta first mesh, via for instance a mouse click or a tap. One example ofsuch a message may be message 1506 depicted in snapshot 1500, which mayprompt a user to “Tap the object you want to measure from.” Once thecomputing device has received a user input identifying a first mesh, thecomputing device may present a message that prompts a user to select asecond mesh, via for instance a mouse click or a tap. One example ofsuch a message may be message 1514 depicted in snapshot 1510, which mayprompt a user to “Tap the object you want to measure to.” Other examplemessages or prompts are possible as well.

As another possibility, the computing device may change a color of amesh in response to receiving a user input identifying that mesh. Toillustrate one example of this, FIG. 15B depicts an example snapshot1510 of a GUI, which includes a three-dimensional view of a constructionproject. As depicted, in response to receiving a user input, such as amouse click or a tap, that identifies mesh 1502, for example, thecomputing device may change the color of mesh 1502 to indicate to theuser that the user has identified mesh 1502. Similarly, as depicted insnapshot 1520 in FIG. 15C, in response to receiving a user input, suchas a mouse click or a tap, that identifies mesh 1504, for example, thecomputing device may change the color of mesh 1504 to indicate to theuser that the user has identified mesh 1504. As depicted in snapshots1510 and 1520, the computing device may change the color of meshes 1502and 1504 from a first color (e.g., grey) to a second color (e.g., blue),where the second color is different than any other color used to renderthe meshes in the three-dimensional display. In other embodiments, othercolor changes are possible as well.

Returning to FIG. 14 at block 1404, the computing device may nextdetermine portions of each identified mesh that intersect atwo-dimensional plane. In one example of this, the computing device mayselect a default two-dimensional plane to use to determine portions ofeach identified mesh that intersect the two-dimensional plane. Thedefault two-dimensional plane may be selected as a two-dimensional planethat is oriented such that the z-axis of the three-dimensional BIM viewis co-planar with the two-dimensional plane and is positioned a defaultdistance (e.g., 6 feet) into the field of view. However, othertwo-dimensional planes may be selected as well, such as two-dimensionalplanes that are positioned at other distances into the field of viewand/or are oriented in other manners. In some implementations, thecomputing device may present an option to receive a user input to selectthe position and orientation of the two-dimensional plane. For example,the computing device may display an indication of the two-dimensionalplane and may be configured to reposition the two-dimensional plane byrotating it, resizing it, or repositioning it along one or more of thethree axes of the three-dimensional BIM view based on receipt of arespective user input, such as a touch and drag, among others. Otherways of selecting a two-dimensional plane are possible as well.

The computing device may determine the portions of the first and secondmeshes that intersect with the two-dimensional plane using a processsimilar to that described above with respect to flow diagram 500 in FIG.5 . That process is described in further detail above with respect toflow diagram 500 and, for brevity's sake, is not repeated again here indetail. As general matter, however, the process may include, in oneimplementation, the computing device identifying the trianglescomprising the first mesh that intersect with the two-dimensional planeand the triangles comprising the second mesh that intersect with thetwo-dimensional plane.

Once the computing device determines portions of each identified meshthat intersects a two-dimensional plane, the computing device maydisplay an outline of the portion of each identified mesh thatintersects the two-dimensional plane. As depicted, for instance, insnapshots 1510 and 1520, the computing device may display an outline1512 of the intersection between the first mesh and the two-dimensionalplane, and an outline 1522 of the intersection between the second meshand the two-dimensional plane. In other examples, other intersectionsand other outlines are possible.

Returning again to FIG. 14 at block 1406, the computing device may nextgenerate a two-dimensional drawing based on these determinedintersections by drawing corresponding line segments onto atwo-dimensional display and supplementing this two-dimensional displaywith relevant dimension information based on coordinates of the linesegments. As one example of this, snapshot 1520 includes an exampletwo-dimensional drawing 1524 that may be generated at block 1406. Asdepicted, two-dimensional drawing 1524 may include line segmentsrepresenting the portions of the first mesh 1502 and portions of thesecond mesh 1504 that intersected with the two-dimensional plane.

As further depicted, the computing device may supplement thetwo-dimensional drawing 1524 with dimension information in various ways.As one possibility, the computing device may identify any verticespresent in the two-dimensional display (e.g., connection points formedbetween two different line segments that share one endpoint). Thecomputing device may then use the coordinates of the lines segments toprovide an indication of the dimensions of the portions of the meshbetween the vertices. As another possibility, the computing device mayidentify the left-most line segment of the two-dimensional display andthe right-most line segment of the two-dimensional display. Thecomputing device may then use coordinates of these line segments toprovide an indication of the distance between these two line segments.As yet another possibility, the computing device may identify linesegments that are associated with different meshes. The computing devicemay then use the coordinates of the line segments to provide anindication of the distance between the line segments of differentmeshes. Other ways to supplement a two-dimensional drawing withdimension information are possible as well.

As specifically depicted in snapshot 1520, the computing device maysupplement two-dimensional drawing 1524 with dimension information 1526,which indicates (i) the horizontal distance between one edge of the wallrepresented by mesh 1502 and one edge of the girder represented by mesh1504, and (ii) the vertical distance between another edge of the wallrepresented by mesh 1502 and another edge of the girder represented bymesh 1504.

V. CONCLUSION

Example embodiments of the disclosed innovations have been describedabove. Those skilled in the art will understand, however, that changesand modifications may be made to the embodiments described withoutdeparting from the true scope and spirit of the present invention, whichwill be defined by the claims.

For instance, those in the art will understand that the disclosedoperations for generating two-dimensional drawings based on a BIM fileand a three-dimensional BIM view may be implemented in otherconstruction-related areas. The disclosed operations for generatingtwo-dimensional drawings based on a BIM file and a three-dimensional BIMview could be used in other contexts as well.

Further, to the extent that examples described herein involve operationsperformed or initiated by actors, such as “humans,” “operators,” “users”or other entities, this is for purposes of example and explanation only.The claims should not be construed as requiring action by such actorsunless explicitly recited in the claim language.

The invention claimed is:
 1. A computing system comprising: at least oneprocessor; a non-transitory computer-readable medium; and programinstructions stored on the non-transitory computer-readable medium thatare executable by the at least one processor to cause the computingsystem to: render a three-dimensional view of a construction projectusing a three-dimensional model file that defines a set of meshes,wherein different meshes of the set of meshes represent differentphysical components of the construction project; receive at least oneuser input that identifies at least a first mesh of the set of meshesbut not a second mesh of the set of meshes, wherein the first meshrepresents a first physical component of the construction project andthe second mesh represents a second physical component of theconstruction project; based on the at least one user input, determine afirst portion of the first mesh that intersects with a two-dimensionalplane, wherein a second portion of the second mesh also intersects withthe two-dimensional plane; and based on the at least one user inputidentifying the first mesh but not the second mesh, generate atwo-dimensional drawing that includes a representation of the determinedfirst portion but not the second portion.
 2. The computing system ofclaim 1, wherein the three-dimensional model file comprises a buildinginformation model (BIM) file.
 3. The computing system of claim 1,wherein each respective mesh of the first mesh and the second meshcomprises a plurality of triangles, and wherein a dataset for the firstmesh comprises data defining a plurality of line segments that eachrepresent an intersection between a respective triangle of the firstmesh and the two-dimensional plane.
 4. The computing system of claim 1,wherein: the program instructions executable by the at least oneprocessor to cause the computing system to render the three-dimensionalview of the construction project comprise program instructions that areexecutable by the at least one processor to cause the computing systemto render (i) the three-dimensional view of the construction project and(ii) a display of the two-dimensional plane.
 5. The computing system ofclaim 4, wherein the computing system further comprises programinstructions that are executable by the at least one processor to causethe computing system to: receive an additional user input requestingthat the two-dimensional plane be adjusted; and in response to receivingthe additional user input requesting that the two-dimensional plane beadjusted, modify the display of the two-dimensional plane, whereinmodifying the display of the two-dimensional plane involves at least oneof (a) changing a size of the two-dimensional plane, (b) repositioningthe two-dimensional plane along one or more axes of the renderedthree-dimensional view, or (c) rotating the two-dimensional plane aboutan axis.
 6. The computing system of claim 1, wherein the computingsystem further comprises program instructions that are executable by theat least one processor to cause the computing system to: determinedimensioning information associated with the first portion; and based onthe determined dimensioning information, supplementing thetwo-dimensional drawing with the determined dimensioning information. 7.The computing system of claim 1, wherein the computing system furthercomprises program instructions that are executable by the at least oneprocessor to cause the computing system to: render, on thethree-dimensional view of the construction project, an outline of thefirst portion of the first mesh that intersects with the two-dimensionalplane.
 8. The computing system of claim 1, wherein the at least one userinput further identifies a third mesh of the set of meshes, wherein thethird mesh represents a third physical component of the constructionproject, wherein the computing system further comprises programinstructions that are executable by the at least one processor to causethe computing system to: based on the at least one user input, determinea third portion of the third mesh that intersects with thetwo-dimensional plane, wherein the generated two-dimensional drawingfurther includes a representation of the determined third portion.
 9. Amethod comprising: rendering a three-dimensional view of a constructionproject using a three-dimensional model file that defines a set ofmeshes, wherein different meshes of the set of meshes representdifferent physical components of the construction project; receiving atleast one user input that identifies at least a first mesh of the set ofmeshes but not a second mesh of the set of meshes, wherein the firstmesh represents a first physical component of the construction projectand the second mesh represents a second physical component of theconstruction project; based on the at least one user input, determininga first portion of the first mesh that intersects with a two-dimensionalplane, wherein a second portion of the second mesh also intersects withthe two-dimensional plane; and based on the at least one user inputidentifying the first mesh but not the second mesh, generating atwo-dimensional drawing that includes a representation of the determinedfirst portion but not the second portion.
 10. The method of claim 9,wherein the three-dimensional model file comprises a buildinginformation model (BIM) file, wherein each respective mesh of the firstmesh and the second mesh comprises a plurality of triangles, and whereina dataset for the first mesh comprises data defining a plurality of linesegments that each represent an intersection between a respectivetriangle of the first mesh and the two-dimensional plane.
 11. The methodof claim 9, wherein rendering the three-dimensional view of theconstruction project comprises rendering (i) the three-dimensional viewof the construction project and (ii) a display of the two-dimensionalplane.
 12. The method of claim 11, further comprising: receiving anadditional user input requesting that the two-dimensional plane beadjusted; and in response to receiving the additional user inputrequesting that the two-dimensional plane be adjusted, modifying thedisplay of the two-dimensional plane, wherein modifying the display ofthe two-dimensional plane involves at least one of (a) changing a sizeof the two-dimensional plane, (b) repositioning the two-dimensionalplane along one or more axes of the rendered three-dimensional view, or(c) rotating the two-dimensional plane about an axis.
 13. The method ofclaim 9, further comprising: determining dimensioning informationassociated with the first portion; and based on the determineddimensioning information, supplementing the two-dimensional drawing withthe determined dimensioning information.
 14. The method of claim 9,further comprising: rendering, on the three-dimensional view of theconstruction project, an outline of the first portion of the first meshthat intersects with the two-dimensional plane.
 15. A non-transitorycomputer-readable storage medium having program instructions storedthereon that are executable to cause a computing system to: render athree-dimensional view of a construction project using athree-dimensional model file that defines a set of meshes, whereindifferent meshes of the set of meshes represent different physicalcomponents of the construction project; receive at least one user inputthat identifies at least a first mesh of the set of meshes but not asecond mesh of the set of meshes, wherein the first mesh represents afirst physical component of the construction project and the second meshrepresents a second physical component of the construction project;based on the at least one user input, determine a first portion of thefirst mesh that intersects with a two-dimensional plane, wherein asecond portion of the second mesh also intersects with thetwo-dimensional plane; and based on the at least one user inputidentifying the first mesh but not the second mesh, generate atwo-dimensional drawing that includes a representation of the determinedfirst portion but not the second portion.
 16. The non-transitorycomputer-readable storage medium of claim 15, wherein thethree-dimensional model file comprises a building information model(BIM) file, wherein each respective mesh of the first mesh and thesecond mesh comprises a plurality of triangles, and wherein a datasetfor the first mesh comprises data defining a plurality of line segmentsthat each represent an intersection between a respective triangle of thefirst mesh and the two-dimensional plane.
 17. The non-transitorycomputer-readable storage medium of claim 15, wherein the programinstructions executable to cause the computing system to render thethree-dimensional view of the construction project comprise programinstructions that are executable to cause the computing system to render(i) the three-dimensional view of the construction project and (ii) adisplay of the two-dimensional plane.
 18. The non-transitorycomputer-readable storage medium of claim 17, wherein the programinstructions are further executable to cause the computing system to:receive an additional user input requesting that the two-dimensionalplane be adjusted; and in response to receiving the additional userinput requesting that the two-dimensional plane be adjusted, modify thedisplay of the two-dimensional plane, wherein modifying the display ofthe two-dimensional plane involves at least one of (a) changing a sizeof the two-dimensional plane, (b) repositioning the two-dimensionalplane along one or more axes of the rendered three-dimensional view, or(c) rotating the two-dimensional plane about an axis.
 19. Thenon-transitory computer-readable storage medium of claim 15, wherein theprogram instructions are further executable to cause the computingsystem to: determine dimensioning information associated with the firstportion; and based on the determined dimensioning information,supplement the two-dimensional drawing with the determined dimensioninginformation.
 20. The non-transitory computer-readable storage medium ofclaim 15, wherein the program instructions are further executable tocause the computing system to: render, on the three-dimensional view ofthe construction project, an outline of the first portion of the firstmesh that intersects with the two-dimensional plane.